Technical Field
Aspects of this disclosure relate to accessing random numbers for the execution of computer instructions, and to techniques applicable for storing and using random numbers in processor execution cores that support execution of multiple hardware threads.
Description of the Related Art
In computer systems, random numbers may be needed for a variety of tasks, such as performing cryptographic operations, simulations, or statistical sampling. A hardware structure on a processor may thus generate random numbers that can be used by software executing on the processor.
Accessing a hardware-based random number generator (RNG), in some instances, is a relatively slow process that can take hundreds of clock cycles, particularly when the RNG is remote from an execution core. Further, storage space for random numbers may also be limited. Inefficient use of such limited storage space may cause additional latencies, and possibly even thread starvation, when more than one processing thread is attempting to consume randomly generated numbers. Further, it may be difficult to allocate random numbers to different hardware threads so that available resources are not wasted and that forward progress is ensured.